﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace Model
{
    public class HoldCol
    {
        //Attributter
        private List<Hold> holdCol;

        //Constructor
        public HoldCol()
        {
            holdCol = new List<Hold>();
        }

        //Metoder
        public Hold OpretHold(int holdId, Ridningstype ridningstypeId, DateTime ugedag, DateTime startTid, DateTime slutTid, Person ridelære, List<Person> Staldpiger, List<Person> Medlemmer, int maksAntal, Holdpriser holdpriserId)
        {
            Hold nyHold = new Hold(holdId, ridningstypeId,  ugedag, startTid, slutTid, ridelære, maksAntal, holdpriserId);
            holdCol.Add(nyHold);
            return nyHold;
        }

        public Hold TilknytStaldpige(Person staldpige, int holdId)
        {
            int tempholdId = Convert.ToInt32(getHoldIdx(holdId));
            Hold hold = holdCol[tempholdId];
            hold.TilknytStaldpige(staldpige);
            return hold;
        }

        public Hold TilknytMedlemmer(Person medlem, int holdId)
        {
            int tempholdId = Convert.ToInt32(getHoldIdx(holdId));
            Hold hold = holdCol[tempholdId];
            hold.TilknytMedlem(medlem);
            return hold;
        }

        public Hold HentHold(int holdId)
        {
            foreach (Hold H in holdCol)
            {
                if (H.HoldId == holdId)
                {
                    return H;
                }
            }
            return null;
        }
        
        public void RedigereHold(int holdId, Ridningstype type, DateTime ugedag, DateTime startTid, DateTime slutTid, Person ridelære, int maksAntal, Holdpriser holdpris)
        {
            Hold H = HentHold(holdId);
            H.Type = type;
            H.Ugedag = ugedag;
            H.StartTid = startTid;
            H.SlutTid = slutTid;
            H.Ridelære = ridelære;
            H.MaksAntal = maksAntal;

            H.Holdpris = holdpris;
        }

        public void SletHold(int holdId)
        {
            Hold H = HentHold(holdId);
            holdCol.Remove(H);
        }

        public IEnumerator HentHoldListe()
        {
            return holdCol.GetEnumerator();
        }

        public Hold getHoldIdx(int holdId)
        {
            for (int i = 0; i < holdCol.Count; i++)
                if (holdCol[i].HoldId == holdId)
                    return holdCol[i];
            return null;
        }
    }
}